package main

import "fmt"

// 使用 for + range 语法来遍历 从通道中取得的值。
func main() {

	queue := make(chan string, 2)
	queue <- "one"
	queue <- "two"

	// 关闭通道（让后面的遍历逻辑能够结束）
	// 这个例子证明：一个非空的通道也是可以关闭的，通道中剩下的值仍然可以被接收到。
	close(queue)

	// 这个 range 迭代从 queue 中得到的每个值。
	// 因为我们在前面 close 了这个通道，这个迭代会在接收完 2 个值之后结束。
	// 如果我们没有 close 它，我们将在这个循环中继续阻塞执行，等待接收第三个值
	for elem := range queue {
		fmt.Println(elem)
	}

}
